# -*- coding: utf-8 -*- 
# 作者:飞虎
# 开发时间:2022/5/27 16:35
from PyQt5.Qt import *


class Window(QWidget):
	def __init__(self):
		super().__init__()
		self.setWindowTitle('QListView学习')
		self.resize(500, 500)
		self.data_list = [f"Item{i}" for i in range(15)]
		self.data_list.append("Something very very long")
		self.setup_ui()

	def setup_ui(self):
		btn = QPushButton("增大Spacing", self)
		btn.move(350, 200)
		list_view = QListView(self)
		list_view.move(100, 100)
		list_view.resize(200, 200)
		slm = QStringListModel()
		slm.setStringList(self.data_list)
		list_view.setModel(slm)

		# 自动换行
		# 对于 Flow 为 TopToBottom，应该叫做“自动换列”，
		# 垂直空间不能一次全部显示所有项时，再右侧再加一列显示，而不是加滚动条
		list_view.setWrapping(True)

		# 布局间距
		list_view.setSpacing(1)

		def test_slot():
			list_view.setSpacing(list_view.spacing()+5)

		btn.clicked.connect(test_slot)

		# 对齐
		# setItemAlignment 只有在 ListMode 为 TopToBottom 且 wrapping 打开时才有效
		# list_view.setItemAlignment(Qt.AlignTop)
		# list_view.setItemAlignment(Qt.AlignVCenter | Qt.AlignRight)

		list_view.setWordWrap(True)
		# list_view.setTextElideMode(Qt.ElideLeft)
		# list_view.setTextElideMode(Qt.ElideMiddle)
		list_view.setTextElideMode(Qt.ElideNone)




if __name__ == '__main__':
	import sys

	app = QApplication(sys.argv)
	window = Window()
	window.show()
	sys.exit(app.exec_())
